package work;

// 定义异常类 NoLowerLetter
class NoLowerLetter extends Exception {
    public void print() {
        System.out.printf("%c", '#');
    }
}

// 定义异常类 NoDigit
class NoDigit extends Exception {
    public void print() {
        System.out.printf("%c", '*');
    }
}

class Test {
    // 方法1：用于打印小写字母，如果字符不是小写字母则抛出 NoLowerLetter 异常
    void printLetter(char c) throws NoLowerLetter {
        if (c < 'a' || c > 'z') {
            NoLowerLetter noLowerLetter = new NoLowerLetter(); // 创建 NoLowerLetter 对象
            throw noLowerLetter; // 抛出 noLowerLetter 异常
        } else {
            System.out.print(c);
        }
    }

    // 方法2：用于打印数字字符，如果字符不是数字则抛出 NoDigit 异常
    void printDigit(char c) throws NoDigit {
        if (c < '1' || c > '9') {
            NoDigit noDigit = new NoDigit(); // 创建 NoDigit 对象
            throw noDigit; // 抛出 noDigit 异常
        } else {
            System.out.print(c);
        }
    }
}

public class ExceptionExample {
    public static void main(String args[]) {
        Test t = new Test();
        
        // 遍历字符 0 到 127，测试 printLetter 方法
        for (int i = 0; i < 128; i++) {
            try {
                t.printLetter((char) i); // 调用 printLetter 方法
            } catch (NoLowerLetter e) {
                e.print(); // 捕获 NoLowerLetter 异常并打印 #
            }
        }
        
        // 遍历字符 0 到 127，测试 printDigit 方法
        for (int i = 0; i < 128; i++) {
            try {
                t.printDigit((char) i); // 调用 printDigit 方法
            } catch (NoDigit e) {
                e.print(); // 捕获 NoDigit 异常并打印 *
            }
        }
    }
}
